import json
from openai import OpenAI

# 请更换成你的deepseek服务密钥
# 参考资料：https://platform.deepseek.com/api_keys
api_key = "sk-347a4db697db4e26a254f5c7bd73d348"

assert api_key, "请在llm.py开头代码中填入合法的大模型服务密钥"

client = OpenAI(api_key=api_key, base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")


def llm_generate_questions(user_prompt: str, n: int = 3) -> dict:
    """调用大模型JSON格式化输出服务，执行基于输入关键词，自动生成n道选择题数据的任务"""
    # 构造提示词
    system_prompt = """
用户输入生成选择题的领域关键词及难度描述，格式如：“领域：Python编程 难度：中等”，请根据输入的领域关键词，自由发挥生成该领域相关的{}道单选选择题，每道题有A、B、C、D四个选项，
在JSON格式的出题结果中，请用“questions”字段以数组形式记录各道题目信息，
其中每道题都为一个字典，具有“question”字段记录问题内容，“A”字段记录选项A内容，“B”字段记录选项B内容，“C”字段记录选项C内容，“D”字段记录选项D内容，
“answer”字段记录正确选项（取值在A、B、C、D中），“answer_explain”字段记录正确选项的详细解释内容，
上述内容需要用中文回答
"""

    # 构造系统提示词、用户输入上下文
    messages = [
        {"role": "system", "content": system_prompt.format(n)},
        {"role": "user", "content": user_prompt},
    ]
    print(messages)
    # 尝试调用服务
    try:
        response = client.chat.completions.create(
            model="qwen-plus",
            messages=messages,
            response_format={"type": "json_object"},
        )
        # print(f"res",json.loads(response.choices[0].message))
    except Exception as e:
        return {"error": str(e)}

    return json.loads(response.choices[0].message.content)
